package ar.edu.utn.frba.tacs.warnes.aop;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.PrintStream;
import java.util.Date;

import ar.edu.utn.frba.tacs.warnes.utils.ConstantesWarnes;
import ar.edu.utn.frba.tacs.warnes.utils.ContenedorWarnes;
import ar.edu.utn.frba.tacs.warnes.utils.ConstantesWarnes.LogLevel;

/**
 * Clase usada para logueo
 * 
 * @author Diego
 * 
 */
public abstract class Utils {

	public static void loguear(String str) {
		loguear(ConstantesWarnes.LogLevel.INFO, str);
	}

	public static void loguear(LogLevel level, String str) {
		System.out.println(level + ": " + new Date(System.currentTimeMillis())
				+ ": " + str);
	}

	@SuppressWarnings("deprecation")
	public static Date crearFecha(String fecha) {
		String[] sp = fecha.split("/");
		return new Date(Integer.valueOf(sp[2]), Integer.valueOf(sp[1]), Integer
				.valueOf(sp[0]));
	}

	public static void logEnArchivo(String string, Long id) {
		FileOutputStream archivo;
		PrintStream p = null;
		try {
			String ruta = ContenedorWarnes.getInstance().getRutaLog();

			if (ruta == null || "".equals(ruta)) {
				// Si no se especifico nunca ruta, se usa C: por defecto
				ruta = "C:\\warnes\\log\\";
			}
			
			File fileToCreate = new File(ruta);
			// Si el directorio elegido no existe, lo creo
			if (!fileToCreate.canRead())
				fileToCreate.mkdirs();

			archivo = new FileOutputStream(ruta + "warnesLog.txt", true);
			p = new PrintStream(archivo);

			StringBuffer sb = new StringBuffer();
			sb.append("[" + new Date(System.currentTimeMillis()) + "],");
			sb.append("[" + id + "],");
			sb.append("[" + string + "]");
			p.println(sb);

			p.flush();
			p.close();
		} catch (Exception e) {
			loguear(ConstantesWarnes.LogLevel.DEBUG, "<<<< ERROR LOGUEO >>>> "
					+ e.getMessage());
		}
	}

	public static void grabarArchivoADisco(String ruta, String file, String dato)
			throws IOException {
		try {
			File fileToCreate = new File(ruta);
			// Si el directorio elegido no existe, lo creo
			if (!fileToCreate.canRead())
				fileToCreate.mkdirs();

			FileOutputStream archivo = new FileOutputStream(ruta+file, true);
			PrintStream p = new PrintStream(archivo);
			p.println(dato);
			p.flush();
			p.close();

		} catch (IOException ex) {
			throw ex;
		}

	}

}
